set -g __git_auto_fetch_interval 60

function __git_fetch_all_cd --description '进入 Git 仓库时自动 fetch'

    if not git rev-parse --is-inside-work-tree 1>/dev/null 2>&1
        return
    end

    set gitdir (git rev-parse --git-dir)

    # 如果 NO_AUTO_FETCH 文件存在，则跳过
    if test -e "$gitdir/NO_AUTO_FETCH"
        return
    end

    # 记录本次 fetch 时间
    date -R >"$gitdir/FETCH_LOG"

    # 后台 fetch
    env GIT_SSH_COMMAND="ssh -o BatchMode=yes" GIT_TERMINAL_PROMPT=0 git fetch --all --recurse-submodules=yes >>"$gitdir/FETCH_LOG" 2>&1 &
end

function git_auto_fetch_cd --on-variable PWD
    __git_fetch_all_cd
end
